import os
import pandas as pd
import chardet
input_folder = r'F:\能经\cff_ssp126'#csv文件夹
output_folder = r'F:\能经\uncertain'#注意，先提前创造该文件夹，用以存放不确定性

# 遍历所有文件夹
for folder_name in os.listdir(input_folder):
    input_folder1 = os.path.join(input_folder, folder_name)

    dic = {}
    for file_name in os.listdir(input_folder1):
        if file_name.endswith('.csv'):
            input_file = os.path.join(input_folder1, file_name)
            # 读取文件时不指定编码格式
            data = pd.read_csv(input_file)
            # 获取文件的编码格式
            with open(input_file, 'rb') as f:
                result = chardet.detect(f.read())  # 使用chardet库来检测文件编码

            encoding = result['encoding']  # 获取检测到的编码格式

            # 使用检测到的编码格式来处理数据
            data = pd.read_csv(input_file, encoding=encoding)  # 使用检测到的编码格式来读取文件

            a, loc1, loc2 = file_name.split('_')
            loc2 = loc2[:-4]  # 处理掉.csv
            loc = loc1 + '_' + loc2
            vv = data['cf_80'].var()
            dic[loc] = vv  # 建立一个对应关系

    input_file = r"E:\文件夹\能经\result_g.csv"  # 梓欣的那个表，有情景分类
    df = pd.read_csv(input_file, encoding='GB2312')


    def cf_fc(x):
        loc = str(x.lon) + '_' + str(x.lat)
        return dic[loc]


    df['cf_var'] = df.apply(cf_fc, axis=1)  # 应用方法，把cf方差运用过来

    # 提取需要的部分
    df2 = df[['lon', 'lat', 'cf_var']]
    output_file = os.path.join(output_folder, f'ave_{folder_name}.csv')
    df2.to_csv(output_file, encoding='ANSI', index=False)  # 输出
    print(f"Processing folder {folder_name} completed")  # 打印处理完成的文件夹名称